//Artigo de Eberhardt 2000
#ifndef HYBRID_INTEGRATION_H
#define HYBRID_INTEGRATION_H

#include "integrationMethod.h"

class HybridIntegration: public IntegrationMethod {
    public:
       HybridIntegration();
       HybridIntegration(double, double, std::vector<State>, std::vector< std::vector<Particle *> > &, std::vector< std::vector<Spring *> > &, bool, int, double,  double,  double, Vector3D);
       ~HybridIntegration();

       void calculate(bool, unsigned int, double);
       void repopulateK_C(const State&, unsigned int, Matrix*, Matrix*);
       Matrix matrixCoefficient(const Matrix&, const Matrix&, const Matrix&, unsigned int);
       Vector matrixIndependentTerms(const Matrix&, const Matrix&, Vector, const Vector&, const Vector&);
};

#endif
